package framework.elements;

import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.Select;

/**
 * Класс, описывающий комбобокс (выпадающий список).
 */
public class ComboBox extends BaseElement {

    public ComboBox(final By locator, final String name) {
        super(locator, name);
    }

    protected final String getElementType() {
        return "ComboBox";
    }

    /**
     * Проверить наличие комбобокса и получить выбранное значение (label).
     */
    public final String getSelectedLabel() {
        assertIsPresent();
        return new Select(element).getFirstSelectedOption().getText();
    }

    /**
     * Выбрать значение из списка.
     * @param optionLocator
     *            Локатор значения, которое необходимо выбрать
     */
    public final void select(final String optionLocator) {
        waitAndAssertIsPresent();
        info(String.format("Selecting by locator '%1$s'", optionLocator));
        new Select(element).selectByVisibleText(optionLocator);
    }

    public final void selectByText(final String value) {
        waitAndAssertIsPresent();
        info(String.format("Selecting text '%1$s'", value));
        new Select(element).selectByVisibleText(value);
    }

    public final void selectByValue(final String value) {
        waitAndAssertIsPresent();
        info(String.format("Selecting value '%1$s'", value));
        new Select(element).selectByValue(value);
    }

}
